
// 没有确切定义返回值类型，运行的数组每一项都可以是任意类型
// function createArray(lenth: number, value: any): Array<any> {
//     let arr = []
//     for (var i = 0; i < length; i++) {
//         arr[i] = value
//     }
//     return arr
// }
// createArray(3, 1)
// createArray(3, 'hello')

// 使用泛型将其改造
// T代表任意类型，使用时再指定

function createArray<T>(lenth: number, value: T): Array<T> {
    let arr = []
    for (var i = 0; i < length; i++) {
        arr[i] = value
    }
    return arr;
}

var strArry: string[] = createArray<string>(3, 'hello')
var numArry: number[] = createArray<number>(3, 1)


// 接口当中采用泛型
interface Icreate {
    <T>(name: string, value: T): Array<T>
}

let func: Icreate
func = function <T>(name: string, value: T): Array<T> {
    return []
}

var strArr: string[] = func('liming', '你好')